﻿using Onshi.POS.Modelo.Entidades.Tipos;
using Onshi.POS.Modelo.Enumeradores;
using Onshi.POS.Modelo.Objectos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Onshi.POS.Modelo.Entidades
{
    [Serializable]
    public class Vendedor : Persona<RubroVendedor, DomicilioVendedor, TelefonoVendedor, VendedorCampoPersonalizadoVendedor, CampoPersonalizadoVendedor>
    {
        #region Constructores

        public Vendedor()
            : base()
        {
        }

        #endregion

        #region Atributos

        private TipoComisionVendedor tipoComision;
        private Decimal comision;
        private Decimal comisionMaxima;

        #endregion

        #region Propiedades

        public Decimal ComisionMaxima
        {
            get { return comisionMaxima; }
            set { comisionMaxima = value; }
        }

        public Decimal Comision
        {
            get { return comision; }
            set { comision = value; }
        }

        public TipoComisionVendedor TipoComision
        {
            get { return tipoComision; }
            set { tipoComision = value; }
        }

        public String TipoComisionNombre
        {
            get { return tipoComision.Nombre; }
        }

        public String ComisionFormato
        {
            get
            {
                var comisionFormato = String.Empty;
                switch ((EnumTiposComisionesVendedores)tipoComision.Id)
                {
                    case EnumTiposComisionesVendedores.PorcentajeVenta:
                    case EnumTiposComisionesVendedores.PorcentajeGanancia:
                        comisionFormato = Formato.Porcentaje(comision);
                        break;
                    case EnumTiposComisionesVendedores.MontoFijo:
                        comisionFormato = Formato.Moneda(comision);
                        break;
                }
                return comisionFormato;
            }
        }

        public String ComisionMaximaFormato
        {
            get
            {
                var comisionMaximaFormato = String.Empty;
                switch ((EnumTiposComisionesVendedores)tipoComision.Id)
                {
                    case EnumTiposComisionesVendedores.PorcentajeVenta:
                    case EnumTiposComisionesVendedores.PorcentajeGanancia:
                        comisionMaximaFormato = Formato.Porcentaje(comisionMaxima);
                        break;
                    case EnumTiposComisionesVendedores.MontoFijo:
                        comisionMaximaFormato = Formato.Moneda(comisionMaxima);
                        break;
                }
                return comisionMaximaFormato;
            }
        }

        #endregion
    }
}
